{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "from torch import nn\n",
    "from d2l import torch as d2l"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型定义"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "#计算除以的是步长\n",
    "net=nn.Sequential(\n",
    "    # \"\"\"第一层卷积\"\"\"\n",
    "    nn.Conv2d(1,6,kernel_size=5,padding=2),nn.Sigmoid(),#(28+2x2-5)/1+1=28\n",
    "    nn.AvgPool2d(kernel_size=2,stride=2),#(28-2)/2+1=14\n",
    "    #第二层卷积\n",
    "    nn.Conv2d(6,16,kernel_size=5),nn.Sigmoid(),#(14-5)/1+1=10\n",
    "    nn.AvgPool2d(kernel_size=2,stride=2),#(10-2)/2+1=5\n",
    "    # \"\"\"全连接层\"\"\"\n",
    "    nn.Flatten(),\n",
    "    nn.Linear(16*5*5,120),nn.Sigmoid(),\n",
    "    nn.Linear(120,84),nn.Sigmoid(),\n",
    "    nn.Linear(84,10)\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "\"\"\"参数初始化\"\"\"\n",
    "def init_parameters(m):\n",
    "    if type(m)==nn.Linear:\n",
    "        nn.init.xavier_normal_(m.weight)\n",
    "        nn.init.constant_(m.bias,0)\n",
    "    if type(m)==nn.Conv2d:\n",
    "        nn.init.xavier_normal_(m.weight)\n",
    "        nn.init.constant_(m.bias,0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结构"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Conv2d out_put shape:\t torch.Size([1, 6, 28, 28])\n",
      "Sigmoid out_put shape:\t torch.Size([1, 6, 28, 28])\n",
      "AvgPool2d out_put shape:\t torch.Size([1, 6, 14, 14])\n",
      "Conv2d out_put shape:\t torch.Size([1, 16, 10, 10])\n",
      "Sigmoid out_put shape:\t torch.Size([1, 16, 10, 10])\n",
      "AvgPool2d out_put shape:\t torch.Size([1, 16, 5, 5])\n",
      "Flatten out_put shape:\t torch.Size([1, 400])\n",
      "Linear out_put shape:\t torch.Size([1, 120])\n",
      "Sigmoid out_put shape:\t torch.Size([1, 120])\n",
      "Linear out_put shape:\t torch.Size([1, 84])\n",
      "Sigmoid out_put shape:\t torch.Size([1, 84])\n",
      "Linear out_put shape:\t torch.Size([1, 10])\n"
     ]
    }
   ],
   "source": [
    "X=torch.rand(size=(1,1,28,28),dtype=torch.float32)\n",
    "for layer in net:\n",
    "    X=layer(X)\n",
    "    print(layer.__class__.__name__,'out_put shape:\\t',X.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 模型训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**数据加载**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "from torchvision import datasets,transforms\n",
    "# 下载训练集\n",
    "train_dataset = datasets.MNIST(root='./num/',\n",
    "                               train=True,\n",
    "                               transform=transforms.ToTensor(),\n",
    "                               download=True)\n",
    "# 下载测试集\n",
    "test_dataset = datasets.MNIST(root='./num/',\n",
    "                              train=False,\n",
    "                              transform=transforms.ToTensor(),\n",
    "                              download=True)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "60000"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([60000])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_dataset.targets.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([60000, 28, 28])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_dataset.data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[[0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0118, 0.0706, 0.0706, 0.0706,\n",
      "          0.4941, 0.5333, 0.6863, 0.1020, 0.6510, 1.0000, 0.9686, 0.4980,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.1176, 0.1412, 0.3686, 0.6039, 0.6667, 0.9922, 0.9922, 0.9922,\n",
      "          0.9922, 0.9922, 0.8824, 0.6745, 0.9922, 0.9490, 0.7647, 0.2510,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1922,\n",
      "          0.9333, 0.9922, 0.9922, 0.9922, 0.9922, 0.9922, 0.9922, 0.9922,\n",
      "          0.9922, 0.9843, 0.3647, 0.3216, 0.3216, 0.2196, 0.1529, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0706,\n",
      "          0.8588, 0.9922, 0.9922, 0.9922, 0.9922, 0.9922, 0.7765, 0.7137,\n",
      "          0.9686, 0.9451, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.3137, 0.6118, 0.4196, 0.9922, 0.9922, 0.8039, 0.0431, 0.0000,\n",
      "          0.1686, 0.6039, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0549, 0.0039, 0.6039, 0.9922, 0.3529, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.5451, 0.9922, 0.7451, 0.0078, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0431, 0.7451, 0.9922, 0.2745, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.1373, 0.9451, 0.8824, 0.6275,\n",
      "          0.4235, 0.0039, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.3176, 0.9412, 0.9922,\n",
      "          0.9922, 0.4667, 0.0980, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1765, 0.7294,\n",
      "          0.9922, 0.9922, 0.5882, 0.1059, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0627,\n",
      "          0.3647, 0.9882, 0.9922, 0.7333, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.9765, 0.9922, 0.9765, 0.2510, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.1804, 0.5098,\n",
      "          0.7176, 0.9922, 0.9922, 0.8118, 0.0078, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.1529, 0.5804, 0.8980, 0.9922,\n",
      "          0.9922, 0.9922, 0.9804, 0.7137, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0941, 0.4471, 0.8667, 0.9922, 0.9922, 0.9922,\n",
      "          0.9922, 0.7882, 0.3059, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0902, 0.2588, 0.8353, 0.9922, 0.9922, 0.9922, 0.9922, 0.7765,\n",
      "          0.3176, 0.0078, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0706, 0.6706,\n",
      "          0.8588, 0.9922, 0.9922, 0.9922, 0.9922, 0.7647, 0.3137, 0.0353,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.2157, 0.6745, 0.8863, 0.9922,\n",
      "          0.9922, 0.9922, 0.9922, 0.9569, 0.5216, 0.0431, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.5333, 0.9922, 0.9922, 0.9922,\n",
      "          0.8314, 0.5294, 0.5176, 0.0627, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000],\n",
      "         [0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,\n",
      "          0.0000, 0.0000, 0.0000, 0.0000]]])\n",
      "5\n"
     ]
    }
   ],
   "source": [
    "for x,y in train_dataset:\n",
    "    print(x)\n",
    "    print(y)\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch.utils\n",
    "import torch.utils.data\n",
    "\n",
    "\n",
    "tensor_iter_train=torch.utils.data.DataLoader(\n",
    "    train_dataset,\n",
    "    batch_size=64,\n",
    "    shuffle=True\n",
    ")\n",
    "\n",
    "tensor_iter_test=torch.utils.data.DataLoader(\n",
    "    test_dataset,\n",
    "    batch_size=64,\n",
    "    shuffle=True\n",
    "\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**模型设置**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "z:\\ANACONDA\\envs\\DL_pytorch\\lib\\site-packages\\torch\\nn\\_reduction.py:42: UserWarning: size_average and reduce args will be deprecated, please use reduction='mean' instead.\n",
      "  warnings.warn(warning.format(ret))\n"
     ]
    }
   ],
   "source": [
    "loss=nn.CrossEntropyLoss(reduce=\"None\")\n",
    "optimizer=torch.optim.Adam(params=net.parameters(),lr=0.003)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**cpu训练**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "# num_epochs=20\n",
    "# for epoch in range(num_epochs):\n",
    "#     for X,y in tensor_iter_train:\n",
    "#         optimizer.zero_grad()\n",
    "#         l=loss(net(X),y)\n",
    "#         l.mean().backward()\n",
    "#         optimizer.step()\n",
    "#     if epoch%2==0:\n",
    "#         print(f\"第{epoch+1}轮训练，损失值为\",l.mean())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**GPU训练**"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "第1次训练，损失测试值： tensor(0.0531, grad_fn=<NllLossBackward0>)\n",
      "第2次训练，损失测试值： tensor(0.0427, grad_fn=<NllLossBackward0>)\n",
      "第3次训练，损失测试值： tensor(0.0616, grad_fn=<NllLossBackward0>)\n",
      "第4次训练，损失测试值： tensor(0.0135, grad_fn=<NllLossBackward0>)\n",
      "第5次训练，损失测试值： tensor(0.0587, grad_fn=<NllLossBackward0>)\n",
      "第6次训练，损失测试值： tensor(0.1462, grad_fn=<NllLossBackward0>)\n",
      "第7次训练，损失测试值： tensor(0.0147, grad_fn=<NllLossBackward0>)\n",
      "第8次训练，损失测试值： tensor(0.0061, grad_fn=<NllLossBackward0>)\n",
      "第9次训练，损失测试值： tensor(0.0203, grad_fn=<NllLossBackward0>)\n",
      "第10次训练，损失测试值： tensor(0.0383, grad_fn=<NllLossBackward0>)\n"
     ]
    }
   ],
   "source": [
    "train_loss_list=[]\n",
    "test_lost_list=[]\n",
    "num_epochs=10\n",
    "net.apply(init_parameters)\n",
    "net=net.to(torch.device(\"cuda:0\"))\n",
    "for epoch in range(num_epochs):\n",
    "    #放回GPU进行下一次训练\n",
    "    net=net.to(torch.device(\"cuda:0\"))\n",
    "    for X,y in tensor_iter_train:\n",
    "        X=X.to(torch.device(\"cuda:0\"))\n",
    "        y=y.to(torch.device(\"cuda:0\"))\n",
    "        optimizer.zero_grad()\n",
    "        l=loss(net(X),y)\n",
    "        l.mean().backward()\n",
    "        optimizer.step()\n",
    "    train_loss_list.append(l)\n",
    "    #拿到CPU测试精准度（测试集）\n",
    "    net=net.to(torch.device(\"cpu\"))\n",
    "    for X_test,y_test in tensor_iter_test:\n",
    "        loss_test=loss(net(X_test),y_test)\n",
    "        print(f\"第{epoch+1}次训练，损失测试值：\",loss_test)\n",
    "        break\n",
    "    test_lost_list.append(loss_test)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**绘图**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把训练和测试的损失变为Numpy格式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_loss_list=[x.cpu().detach().numpy() for x in train_loss_list]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "test_lost_list=[x.cpu().detach().numpy() for x in test_lost_list]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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o6KitKoK4l/kZ5DbfxUREaH1n6EvyxgefPBBzXgrKbCbbrpJ61n23nvvaTfif66++mrN81O3bl0tBbZ69WpMnjwZd9xxh9FLszQsg/cjEs5/5ZVXtBOulPi+8cYbWnk88S/SZC8vPvzwQ9x+++1+Xw85n969e7MM3mAkPTx27Fhs375di5LKRdzw4cONXpYjSUxM1BohStRa0sXi/Rk8eDDGjRunZRhIyaAAIoQQQojjoAeIEEIIIY6DAogQQgghjoMCiBBCCCGOgwKIEEIIIY6DAogQQgghjoMCiBBCCCGOgwKIEEIIIY6DAogQQvzI4sWLtWacp06dMnophDgaCiBCCCGEOA4KIEIIIYQ4DgogQojP5nk98MADeOSRR1CpUiVUr14dTz/9tPbanj17tDSQTHvXkZSQPCcpIs9U0S+//IL27dtrg2ovvvhibRbSzz//jObNmyMyMhI333yzNi27KMj07IkTJ2qzreR4bdu2xZdffpn1uv6eP/74I9q0aYPQ0FB07doVGzZsyHGcr776ShtKGRISgpiYGEyaNCnH66mpqXj00UdRp04dbZ9GjRrhgw8+yLFPXFycNhw5PDxcGzyae/o6IcS3UAARQnzGxx9/rE12X758OV5++WU8++yzWLBgQbGOIaJJBgkvWbIE+/fv16aTy5DUWbNmaULl119/xZtvvlmkY4n4+eSTTzBt2jRs3LhRm3p+66234o8//six38MPP6yJmn///RdVqlTRpnGfO3cuS7jIGgYNGoT169dr65NBlR999FHW1w8ZMgSff/65NvB48+bNePfdd1GuXLkc7/HEE09o77Fy5UqULVuWk70J8TcyDJUQQrxNr169XD179szxXKdOnVyPPvqoa/fu3TKE2bV69eqs106ePKk99/vvv2uP5V4eL1y4MGufiRMnas/t3Lkz67n//e9/rn79+hW6nrNnz7rCw8NdS5YsyfH8nXfe6Ro8eHCO95w9e3bW68ePH3eFhYW55syZoz2++eabXZdcckmOYzz88MOuFi1aaNtbt27VjrFgwYI815HX/+vHH3/UnktJSSn0/0EI8Q6MABFCfIakkTypUaOGlsIq6TGqVaumpYwaNGiQ47miHHPHjh1aquySSy7RojH6TSJCO3fuzLFvt27dsrYlfde0aVMtkiPIfY8ePXLsL4+3b9+OjIwMLa0XGBiIXr16Ffn/Jd8XobjfG0JIySlbiq8lhJACCQoKyvFY/DXiwwkIUNdeLpcEPhR6iqmgY8jX53fMwjhz5ox2L2mzWrVq5XhNfDreQrxFRSH3/0soyv+DEOIdGAEihPgd8dUIhw4dynrO0xDtC1q0aKEJnX379mmmZM+bmJU9WbZsWdb2yZMnsW3bNs10Lcj9P//8k2N/edykSRMt8tO6dWtNyOT2FRFCzAUjQIQQvyNREqmuevHFF7WKLEn9PPnkkz59z/Lly2PMmDGa8VkESs+ePZGQkKCJF6kmGzp0aNa+YtauXLmyll4Ts3J0dDQGDBigvfbQQw+hU6dOmDBhAgYOHIilS5dqJu23335be12qwuRYYmoWE7RUmu3du1f7P4p5mhBiDhgBIoQYwowZM5Ceno7Y2FiMGjUKzz33nM/fU0SLVGxJNZhEci677DItJSYizBMRZiNHjtTWdvjwYfzwww8IDg7WXuvQoQO++OILzJ49G61atcK4ceM0wXT77bdnff0777yDG264Af/3f/+HZs2aYfjw4UhKSvL5/48QUnTKiBO6GPsTQohtkT5AF110kZb2qlChgtHLIYT4EEaACCGEEOI4KIAIIbZAzM2e5e25b/I6IYToMAVGCLEF4ieSERv5IeZk6bhMCCECBRAhhBBCHAdTYIQQQghxHBRAhBBCCHEcFECEEEIIcRwUQIQQQghxHBRAhBBCCHEcFECEEEIIcRwUQIQQQghxHBRAhBBCCHEc/w9ZjpXPo+b8iwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "plt.plot(np.arange(len(train_loss_list)),train_loss_list,label=\"train\",color=\"blue\")\n",
    "plt.plot(np.arange(len(test_lost_list)),test_lost_list,label=\"test\",color=\"orange\")\n",
    "plt.title(\"loss test train\")\n",
    "plt.xlabel(\"num_epoch\")\n",
    "plt.ylabel(\"loss\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "DL_pytorch",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
